﻿using System;
using Mono.Cecil;

namespace CoreEx.Common.Ioc
{
    /// <summary>
    /// Represents a class that is capable of modifying a <see cref="Type"/> 
    /// by implementing one or more additional interfaces.
    /// </summary>
    public interface IImplementor
    {
        /// <summary>
        /// Modifies the <paramref name="baseType"/> to implement a list of additional <paramref name="interfaces"/>.
        /// </summary>
        /// <param name="baseType">The type that will be modified.</param>
        /// <param name="interfaces">The list of interfaces to implement.</param>
        void Implement(TypeDefinition baseType, Type[] interfaces);
        
    }
}
